home *** CD-ROM | disk | FTP | other *** search
- Path: engnews1.Eng.Sun.COM!taumet!clamage
- From: clamage@Eng.sun.com (Steve Clamage)
- Newsgroups: comp.std.c++
- Subject: Re: #warning
- Date: 20 Feb 1996 21:13:15 GMT
- Organization: Sun Microsystems Inc.
- Approved: clamage@eng.sun.com (comp.std.c++)
- Message-ID: <4gdcvn$cqv@engnews1.Eng.Sun.COM>
- References: <4g91rh$kgn@mulga.cs.mu.OZ.AU>
- Reply-To: clamage@Eng.sun.com
- NNTP-Posting-Host: taumet.eng.sun.com
- Content-Type: text
- X-Nntp-Posting-Host: taumet.eng.sun.com
- Content-Length: 1735
- X-Lines: 41
- Originator: clamage@taumet
-
- In article kgn@mulga.cs.mu.OZ.AU, fjh@munta.cs.mu.OZ.AU (Fergus Henderson) writes:
- >clamage@Eng.Sun.COM (Steve Clamage) writes:
- >>
- >>Yes, you forgot to say how it differs from #error, which is already in the
- >>draft (and in Standard C). The description of #error says only that it
- >>"causes the implementation to produce a diagnostic message that includes
- >>the specified sequence of preprocessing tokens."
- >
- >Isn't this a bug in the standard? Doesn't this mean that
- >
- > #error foobar
- > int main() { return 0; }
- >
- >is a strictly conforming program? Yet no compiler I know of will accept it!
-
- It is a strictly conforming program (although we don't use that terminology
- in the C++ standard). The implementation must tell you what the effect
- of #error is. If the effect is to abort compilation, that is allowed.
-
- >Surely the semantics specified for #error should say that it has the effect
- >of making the translation unit ill-formed.
-
- Why? You can write ill-formed code if you want to. For example:
- #if undesirable_condition
- this phrase should not be seen by the compiler
- #endif
-
- The #error directive is part of the language, and I think it would be a
- contradiction in terms to say that a valid language construct is ill-formed.
-
- "Everyone knows" that the #error directive is supposed to halt compilation,
- but for reasons I outlined earlier there isn't a good way (or at least
- no one has found a way) to say so in the standard, given the basic
- assumptions about what the C++ standard is supposed to be. Other languages
- may define a particular environment where you can talk about compilation,
- or linking, or known formats of data types, etc, but we have chosen not
- to do so with C++.
- ---
- Steve Clamage, stephen.clamage@eng.sun.com
-
-
-
- [ To submit articles: Try just posting with your newsreader.
- If that fails, use mailto:std-c++@ncar.ucar.edu
- FAQ: http://reality.sgi.com/employees/austern_mti/std-c++/faq.html
- Policy: http://reality.sgi.com/employees/austern_mti/std-c++/policy.html
- Comments? mailto:std-c++-request@ncar.ucar.edu
- ]
-